package qc.module.ehs.api.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import qc.common.core.exception.QCPromptException;
import qc.module.ehs.dto.facility.FacilityDto;
import qc.module.ehs.dto.facility.FacilityQueryConditionDto;
import qc.module.ehs.service.EhsFacilityBasicService;

import java.util.List;

/**
 * FacilityController
 *
 * @author QuCheng Tech
 * @create 2024/9/23
 */
@RestController
@RequestMapping("/facility")
public class FacilityController {
    
    @Autowired
    private EhsFacilityBasicService service;

    /**
     * 查询设备设施
     *
     * @param condition
     * @return List<FacilityDto>
     * @author QuCheng Tech
     * @since 2024/9/23
     */
    @RequestMapping(value = "/query", method = {RequestMethod.GET, RequestMethod.POST})
    public List<FacilityDto> query(@RequestBody FacilityQueryConditionDto condition) throws QCPromptException {
        return service.query(condition);
    }

    /**
     * 获取指定 - 同时支持@RequestParam 和 @PathVariable两种方式
     * 
     * @param id 设备设施ID
     * @return FacilityDto
     * @author QuCheng Tech
     * @since 2024/9/23
     */
    @GetMapping("/get")
    public FacilityDto getByParam(@RequestParam String id){
        return service.getById(id);
    }

    /**
     * 获取指定 - 同时支持@RequestParam 和 @PathVariable两种方式
     *
     * @param id 设备设施ID
     * @return FacilityDto
     * @author QuCheng Tech
     * @since 2024/9/23
     */
    @GetMapping("/get/{id}")
    public FacilityDto getByPath(@PathVariable String id){
        return service.getById(id);
    }

    /**
     * 新增
     * 
     * @param dto 新增信息DTO
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/9/23
     */
    @RequestMapping(value = "/add",method = {RequestMethod.POST})
    public String add(@RequestBody FacilityDto dto){
        return service.add(dto);
    }

    /**
     * 修改
     *
     * @param dto 新增信息DTO
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/9/23
     */
    @PutMapping("/update")
    public String update(@RequestBody FacilityDto dto){
        return service.update(dto);
    }

    /**
     * 删除  - 同时支持@RequestParam 和 @PathVariable两种方式
     * 
     * @param id 设备设施ID，可以指定多个
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/9/23
     */
    @DeleteMapping("/delete")
    public String deleteByParam(@RequestParam String id){
        return service.deleteById(id);
    }

    /**
     * 删除  - 同时支持@RequestParam 和 @PathVariable两种方式
     *
     * @param id 设备设施ID，可以指定多个
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/9/23
     */
    @DeleteMapping("/delete/{id}")
    public String deleteByPath(@PathVariable String id){
        return service.deleteById(id);
    }

    /**
     * 导入/批量新增
     * 
     * @param dtos 导入/新增设备设置
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/9/24
     */
    @RequestMapping(value = "/import",method = {RequestMethod.POST})
    public String batchAdd(@RequestBody List<FacilityDto> dtos){
        return service.batchAdd(dtos);
    }
    
}
